//package com.njchy.statistics.util;
//
//
//
//import com.mybatisflex.codegen.Generator;
//import com.mybatisflex.codegen.config.GlobalConfig;
//import com.mybatisflex.core.service.IService;
//import com.mybatisflex.spring.service.impl.ServiceImpl;
//import com.zaxxer.hikari.HikariDataSource;
//
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
///**
// * 基础代码构造器
// */
//
//public class CodegenMybatisFlexCodegenUtil {
//    public static void main(String[] args) {
//        //配置数据源
//        HikariDataSource dataSource = new HikariDataSource();
//        dataSource.setDriverClassName("org.postgresql.Driver");
//        dataSource.setJdbcUrl("jdbc:postgresql://192.168.5.130:5432/postgis?currentSchema=public&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai");
//        dataSource.setUsername("postgis");
//        dataSource.setPassword("postgis");
//
//        //创建配置内容，两种风格都可以。
//        // 默认配置
//        GlobalConfig globalConfig = createGlobalConfigUseStyle1();
//        // 指定配置
////        GlobalConfig globalConfig = createGlobalConfigUseStyle2();
//
//        //通过 datasource 和 globalConfig 创建代码生成器
//        Generator generator = new Generator(dataSource, globalConfig);
//
//        //生成代码
//        generator.generate();
//    }
//
//    /**
//     * 生成原则1
//     * 直接生成
//     *
//     * @return
//     */
//    public static GlobalConfig createGlobalConfigUseStyle1() {
//        //创建配置内容
//        GlobalConfig globalConfig = new GlobalConfig();
//
//        //设置根包
//        globalConfig.setBasePackage("com.njchy.statistics");
//
//        //设置表前缀和只生成哪些表
//        // 前缀，没有不加
////        globalConfig.setTablePrefix("tb_");
//        // 填写需要生成的表
////        globalConfig.getStrategyConfig().setGenerateSchema("demo");
//        globalConfig.setGenerateTable("btq_0120");
//        //设置生成 entity
//        globalConfig.setEntityGenerateEnable(true);
//        // 启用 Lombok
//        globalConfig.setEntityWithLombok(true);
//        //设置生成 mapper
//        globalConfig.setMapperGenerateEnable(true);
//        // 控制类
//        globalConfig.setControllerGenerateEnable(true);
//        // 服务类
//        globalConfig.setServiceGenerateEnable(true);
//        // 服务实现类
//        globalConfig.setServiceImplGenerateEnable(true);
//        // 文件
//        globalConfig.setMapperXmlGenerateEnable(true);
//        // 表定义辅助类
////        globalConfig.setTableDefGenerateEnable(true);
//
//        // 注释配置
//        Date date = new Date();
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
//        String format = dateFormat.format(date);
//        globalConfig.getJavadocConfig()
//                .setAuthor("测绘院")
//                .setSince(format);
//        return globalConfig;
//    }
//
//    /**
//     * 生成原则2
//     * 自定义生成
//     *
//     * @return
//     */
//    public static GlobalConfig createGlobalConfigUseStyle2() {
//        //创建配置内容
//        GlobalConfig globalConfig = new GlobalConfig();
//
//        //设置根包
//        globalConfig.getPackageConfig()
//                .setBasePackage("com.example.mybatisflax");
//
//        //设置表前缀和只生成哪些表，setGenerateTable 未配置时，生成所有表
//        globalConfig.getStrategyConfig()
//                // 生成所有表
//                .setGenerateSchema("demo");
//        // 制定表生成
//        //可以单独配置某个表
////                .setGenerateTable("es_goods");
////                .setGenerateTable("es_goods", "es_product", "es_product_store", "goods", "norms_value", "product", "store", "test_table", "wechat_user");
//
//        //设置生成 entity 并启用 Lombok
//        globalConfig.enableEntity().setWithLombok(true);
//        globalConfig.getMapperConfig()
//                .setClassPrefix("My")
//                .setClassSuffix("Entity");
//
//
//        //设置生成 mapper
//        globalConfig.enableMapper();
//        globalConfig.getMapperConfig()
//                .setClassPrefix("My")
//                .setClassSuffix("mapper");
//
//
//        // 设置生成Controller
//        globalConfig.enableController();
//        globalConfig.getControllerConfig()
//                .setClassPrefix("My")
//                .setClassSuffix("Controller")
//                .setRestStyle(true);
//
//
//        // 设置生成Service
//        globalConfig.enableService();
//        globalConfig.getServiceConfig()
//                .setClassPrefix("My")
//                .setClassSuffix("Service")
//                .setSuperClass(IService.class);
//
//        // 设置serviceImpl
//        globalConfig.enableServiceImpl();
//        globalConfig.getServiceImplConfig()
//                .setClassPrefix("My")
//                .setClassSuffix("ServiceImpl")
//                .setSuperClass(ServiceImpl.class);
//
//
//        // 生成MapperXml
//        globalConfig.enableMapperXml();
//        globalConfig.getMapperXmlConfig()
//                .setFilePrefix("My")
//                .setFileSuffix("Mapper");
//
//
//        // 生成配置 TableDefConfig
////        globalConfig.enableTableDef();
////        globalConfig.getTableDefConfig()
////                .setClassPrefix("My")
////                .setClassSuffix("Def");
//
//        // 注释配置
//        Date date = new Date();
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//        String format = dateFormat.format(date);
//        globalConfig.getJavadocConfig()
//                .setAuthor("你的鼎鼎大名")
//                .setSince(format);
//
//        return globalConfig;
//    }
//}
